이 노트북은 제이크 반더플라스(Jake VanderPlas)의 A Whirlwind Tour of Python(OReilly Media, 2016)를 기반으로 만들어졌습니다. 이 내용은 CC0 라이센스를 따릅니다. 전체 노트북의 목록은 https://github.com/rickiepark/WhirlwindTourOfPython 에서 볼 수 있습니다.

< 문자열과 정규 표현식 | 목차 |

데이터 과학 도구 소개

파이썬을 과학 컴퓨팅과 데이터 과학에 사용하고 싶다면 사용가히 편리한 패키지가 여러개 있습니다. 이 절은 그 중에 중요한 몇 개를 소개하겠습니다. 여러분이 만들려고 하는 애플리케이션에 도움이 될 것입니다. 아나콘다미니콘다 환경을 사용하고 있다면 다음 명령으로 관련 패키지를 설치할 수 있습니다:

$ conda install numpy scipy pandas matplotlib scikit-learn

차례대로 간단히 살펴보죠.

넘파이(NumPy): 수치 파이썬(Numerical Python)

넘파이는 파이썬에서 다차원 밀집(dense) 배열을 효율적으로 저장하고 조작하는 도구입니다. 넘파이의 주요 기능은 다음과 같습니다:

가장 간단한 경우 넘파이는 파이썬의 리스트와 비슷합니다. 예를 들어 1에서 9까지 숫자를 담은 배열을 다음과 같이 만듭니다(파이썬의 내장 range()와 비교해 보세요):

넘파이 배열은 데이터를 효율적으로 저장할 뿐만아니라 이 데이터에 대한 효율적인 원소별 연산을 제공합니다. 예를 들어 배열의 각 원소를 거듭제곱하려면 배열에 "**" 연산자를 직접 적용할 수 있습니다:

동일한 결과를 내는 파이썬의 리스트 내포와 비교해 보세요:

(1차원에 제한된)파이썬 리스트와는 달리 넘파이 배열은 다차원이 가능합니다. 예를 들어 x 배열을 3x3 배열로 바꾸어 보겠습니다:

2차원 배열은 행렬을 나타내며 넘파이는 일반적인 행렬 연산을 효율적으로 수행할 수 있습니다. 예를 들어 .T를 사용해 행렬을 전치할 수 있습니다:

또는 np.dot을 사용해 행렬-벡터 곱을 할 수 있습니다:

또는 고유값 분해 같은 더 복잡한 연산도 가능합니다:

이런 선형 대수 연산은 최신 데이터 분석, 특히 머신 러닝과 데이터 마이닝 분야에 꼭 필요합니다.

판다스(Pandas): 레이블된 열 중심의 데이터

판다스는 넘파이보다 더 최근에 등장한 패키지이고 넘파이를 사용합니다. 판다스는 R 같은 언어를 사용했던 사용자들에게 친숙한 DataFrame 형태의 다차원 데이터에 레이블된 인터페이스를 제공합니다. 판다스의 DataFrame은 다음과 같습니다:

판다스에서는 이름으로 열을 선택할 수 있습니다:

문자열 열에는 문자열 연산을 적용할 수 있습니다:

숫자형 열에는 합계 메서드를 적용할 수 있습니다:

그리고 가장 중요한 것은 데이터베이스 스타일의 조인(join)과 그룹핑이 가능합니다:

이렇게 같은 레이블을 같는 모든 원소의 합을 한 줄의 코드로 계산할 수 있습니다. 넘파이나 파이썬 내장 함수를 사용하면 훨씬 번거롭고 더 비효율적입니다.

맷플롯립(Matplotlib): 매트랩(MatLab) 스타일의 시각화

맷플롯립은 현재 파이썬에서 가장 인기있는 과학 그래픽 패키지입니다. 인터페이스가 좀 번거로운 것은 사실이지만 다양한 종류의 그래프를 만들 수 있는 강력한 라이브러리입니다.

맷플롯립을 사용하려면 관례상 패키지를 plt로 임포팅합니다.

이제 약간의 데이터를 만들어 (당연히 넘파이 배열로) 그래프를 그려 보죠:

이 코드를 직접 실행하면 인터렉티브한 그래프를 볼 수 있고 그래프를 이동, 확대하여 데이터를 탐색할 수 있습니다.

이 예는 가장 간단한 맷플롯립의 그래프이고 다양한 그래프 종류를 맷플롯립의 온라인 갤러리에서 볼 수 있습니다.

사이파이(SciPy): 과학 파이썬

사이파이는 넘파이를 기반으로 한 과학 함수들의 모음입니다. 잘 알려진 수치 해석 포트란 라이브러리를 래핑하면서 시작하면서 성장해왔습니다. 이 패키지는 여러 서브모듈로 구성되어 있고 각각 특정 종류의 수치 알고리즘들을 구현합니다. 다음은 이중에서 데이터 과학에 중요한 일부를 추렸습니다:

예를 들어 샘플 데이터의 사이의 커브를 보간하는 예를 보겠습니다.

8개 포인트 사이에 부드러운 보간 결과를 볼 수 있습니다.

다른 데이터 과학 패키지

이런 도구를 기반으로 많은 데이터 과학 패키지가 만들어졌습니다. 대표적으로 머신러닝을 위한 Scikit-Learn, 이미지 분석을 위한 Scikit-Image, 통계적 모델링을 위한 Statsmodels 등입니다. 또 천문학과 천체 물리를 위한 AstroPy, 신경 이미지 처리를 위한 NiPy와 같이 도메인에 특화된 많은 라이브러리가 있습니다.

당면한 과학, 수치 또는 통계 문제가 무엇이든지 간에 아마 이를 도와줄 수 있는 파이썬 패키지가 준비되어 있을 것입니다.

< 문자열과 정규 표현식 | 목차 |